<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head>
  
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">

  
  <link href="../css/style.css" rel="stylesheet" type="text/css">

</head>
<body>
<h1>4.17. Команды управления флагами</h1>
<p class="article">
В предыдущей части учебного курса мы использовали флаг CF, чтобы вернуть из процедуры информацию об ошибке. Чтобы у вас сложилась полная картина, я решил в этой части подробнее рассказать о командах управления флагами.
Как вы, наверно, помните флаги изменяются в результате выполнения арифметических и логических команд, а также команд сдвига. Регистр флагов можно сохранить в стек с помощью команды PUSHF и восстановить из стека с помощью команды POPF. Кроме того, в процессоре существуют специальные команды, которые позволяют явно установить или сбросить флаги CF, DF и IF. Это очень простые команды: у них нет операндов и результатом является только изменение значения соответствующего флага.
</p>
<h2>Флаг переноса CF</h2>
<p class="article">
Команда CLC сбрасывает флаг CF. <br />
Команда STC устанавливает флаг CF в единицу. <br />
Команда CMC инвертирует значение флага CF.
</p>
<h2>Флаг направления DF</h2>
<p class="article">
Этот флаг определяет направление обработки данных цепочечными командами (о них подробно расскажу в отдельной статье). Он должен устанавливаться или сбрасываться перед использованием этих команд. <br />
Команда CLD сбрасывает флаг DF. <br />
Команда STD устанавливает флаг DF в единицу.
</p>
<h2>Флаг прерывания IF</h2>
<p class=article>
Этот флаг определяет, разрешены в данный момент прерывания или нет (о прерываниях тоже будет отдельная статья). <br />
Команда CLI сбрасывает флаг IF (запрещает прерывания). <br />
Команда STI устанавливает флаг IF в единицу (разрешает прерывания).
</p>






</body>
</html>
